home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / general2.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  11KB  |  343 lines

  1.  
  2. /* General2.c - The GUI of the 'General' window of Spot - beautified a bit
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_EDITOR,
  16.     GID_EDITFILE,
  17.     GID_GETEDITFILE,
  18.     GID_WBTOFRONT,
  19.     GID_CHECKDATE,
  20.     GID_DUPECHECKING,
  21.     GID_SPOTTOFRONT,
  22.     GID_CRUNCHBUFFER,
  23.     GID_AREAS,
  24.     GID_GETAREAS,
  25.     GID_INBOUND,
  26.     GID_GETINBOUND,
  27.     GID_OUTBOUND,
  28.     GID_GETOUTBOUND,
  29.     GID_WORK,
  30.     GID_GETWORK,
  31.     GID_NODELIST,
  32.     GID_GETNODELIST,
  33.     GID_FATTACH,
  34.     GID_GETFATTACH,
  35.     GID_SAVE,
  36.     GID_GETSAVE,
  37.     GID_AREXX,
  38.     GID_GETAREXX,
  39.     GID_LOGFILE,
  40.     GID_GETLOGFILE,
  41.     GID_OPTIMIZE,
  42. };
  43.  
  44. /* Some data and tag items we'll be needing later */
  45.  
  46. static const STRPTR dupechecklabels[] =
  47. {
  48.     "Off",
  49.     "Toss in BAD",
  50.     "Kill",
  51.     NULL,
  52. };
  53.  
  54. static const struct TagItem dupechecktags[] =
  55. {
  56.     {GTCY_Labels, dupechecklabels},
  57.     {TAG_DONE},
  58. };
  59.  
  60. static const STRPTR crunchbufferlabels[] =
  61. {
  62.     "No Crunching",
  63.     "Large (256K)",
  64.     "Medium (65K)",
  65.     "Small (33K)",
  66.     NULL,
  67. };
  68.  
  69. static const struct TagItem crunchbuffertags[] =
  70. {
  71.     {GTCY_Labels, crunchbufferlabels},
  72.     {TAG_DONE},
  73. };
  74.  
  75. static const STRPTR optimizelabels[] =
  76. {
  77.     "Areas path",
  78.     "RAM:T",
  79.     NULL,
  80. };
  81.  
  82. static const struct TagItem optimizetags[] =
  83. {
  84.     {GTCY_Labels, optimizelabels},
  85.     {TAG_DONE},
  86. };
  87.  
  88. static const struct TagItem geteditfiletags[] =
  89. {
  90.     {ALT_Image, ALTI_GetFile},
  91.     {ALT_AslRequester, TRUE},
  92.     {TAG_DONE},
  93. };
  94.  
  95. static const struct TagItem getareastags[] =
  96. {
  97.     {ALT_Image, ALTI_GetDir},
  98.     {ALT_AslRequester, TRUE},
  99.     {TAG_DONE},
  100. };
  101.  
  102. static const struct TagItem getinboundtags[] =
  103. {
  104.     {ALT_Image, ALTI_GetDir},
  105.     {ALT_AslRequester, TRUE},
  106.     {TAG_DONE},
  107. };
  108.  
  109. static const struct TagItem getoutboundtags[] =
  110. {
  111.     {ALT_Image, ALTI_GetDir},
  112.     {ALT_AslRequester, TRUE},
  113.     {TAG_DONE},
  114. };
  115.  
  116. static const struct TagItem getworktags[] =
  117. {
  118.     {ALT_Image, ALTI_GetDir},
  119.     {ALT_AslRequester, TRUE},
  120.     {TAG_DONE},
  121. };
  122.  
  123. static const struct TagItem getnodelisttags[] =
  124. {
  125.     {ALT_Image, ALTI_GetDir},
  126.     {ALT_AslRequester, TRUE},
  127.     {TAG_DONE},
  128. };
  129.  
  130. static const struct TagItem getfattachtags[] =
  131. {
  132.     {ALT_Image, ALTI_GetDir},
  133.     {ALT_AslRequester, TRUE},
  134.     {TAG_DONE},
  135. };
  136.  
  137. static const struct TagItem getsavetags[] =
  138. {
  139.     {ALT_Image, ALTI_GetDir},
  140.     {ALT_AslRequester, TRUE},
  141.     {TAG_DONE},
  142. };
  143.  
  144. static const struct TagItem getarexxtags[] =
  145. {
  146.     {ALT_Image, ALTI_GetDir},
  147.     {ALT_AslRequester, TRUE},
  148.     {TAG_DONE},
  149. };
  150.  
  151. static const struct TagItem getlogfiletags[] =
  152. {
  153.     {ALT_Image, ALTI_GetFile},
  154.     {ALT_AslRequester, TRUE},
  155.     {TAG_DONE},
  156. };
  157.  
  158. /* Now, the GadgetSpec's we'll be needing for this GUI */
  159.  
  160. static GadgetSpec gadgetspecs[] =
  161. {
  162.     {STRING_KIND, 20,0,{0,0,0,0, "_Editor", NULL, GID_EDITOR, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  163.     {STRING_KIND, 20,0,{0,0,0,0, "Edi_t file", NULL, GID_EDITFILE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  164.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETEDITFILE, PLACETEXT_IN},geteditfiletags,GS_DefaultTags},
  165.     {CHECKBOX_KIND,0,0,{0,0,0,0, "W_B to front",NULL, GID_WBTOFRONT,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  166.     {CHECKBOX_KIND,0,0,{0,0,0,0, "_Check date",NULL,GID_CHECKDATE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  167.     {CYCLE_KIND,  0,0, {0,0,0,0, "_Dupe checking", NULL,GID_DUPECHECKING, PLACETEXT_LEFT}, dupechecktags, GS_DefaultTags},
  168.     {STRING_KIND, 0,0,{0,0,0,0, "_Spot to front", NULL, GID_SPOTTOFRONT, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  169.     {CYCLE_KIND,  0,0, {0,0,0,0, "Cr_unch buffer", NULL,GID_CRUNCHBUFFER, PLACETEXT_LEFT}, crunchbuffertags, GS_DefaultTags},
  170.     {STRING_KIND, 20,0,{0,0,0,0, "_Areas", NULL, GID_AREAS, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  171.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETAREAS, PLACETEXT_IN},getareastags,GS_DefaultTags},
  172.     {STRING_KIND, 20,0,{0,0,0,0, "_Inbound", NULL, GID_INBOUND, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  173.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETINBOUND, PLACETEXT_IN},getinboundtags,GS_DefaultTags},
  174.     {STRING_KIND, 20,0,{0,0,0,0, "_Outbound", NULL, GID_OUTBOUND, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  175.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETOUTBOUND, PLACETEXT_IN},getoutboundtags,GS_DefaultTags},
  176.     {STRING_KIND, 20,0,{0,0,0,0, "_Work", NULL, GID_WORK, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  177.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETWORK, PLACETEXT_IN},getworktags,GS_DefaultTags},
  178.     {STRING_KIND, 20,0,{0,0,0,0, "_Nodelist", NULL, GID_NODELIST, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  179.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETNODELIST, PLACETEXT_IN},getnodelisttags,GS_DefaultTags},
  180.     {STRING_KIND, 20,0,{0,0,0,0, "_FAttach", NULL, GID_FATTACH, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  181.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETFATTACH, PLACETEXT_IN},getfattachtags,GS_DefaultTags},
  182.     {STRING_KIND, 20,0,{0,0,0,0, "Sa_ve", NULL, GID_SAVE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  183.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETSAVE, PLACETEXT_IN},getsavetags,GS_DefaultTags},
  184.     {STRING_KIND, 20,0,{0,0,0,0, "ARe_xx", NULL, GID_AREXX, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  185.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETAREXX, PLACETEXT_IN},getarexxtags,GS_DefaultTags},
  186.     {STRING_KIND, 20,0,{0,0,0,0, "_Log file", NULL, GID_LOGFILE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  187.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETLOGFILE, PLACETEXT_IN},getlogfiletags,GS_DefaultTags},
  188.     {CYCLE_KIND,  0,0, {0,0,0,0, "Optimi_ze", NULL, GID_OPTIMIZE, PLACETEXT_LEFT},optimizetags,GS_DefaultTags},
  189. };
  190.  
  191. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  192.  * layout engine can locate gadgets merely by their Gadget IDs.
  193.  */
  194.  
  195. GadgetSpec *DEMO_GadgetSpecList[] =
  196. {
  197.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  198.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  199.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  200.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  201.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], &gadgetspecs[18],
  202.     &gadgetspecs[19], &gadgetspecs[20], &gadgetspecs[21], &gadgetspecs[22],
  203.     &gadgetspecs[23], &gadgetspecs[24], &gadgetspecs[25], &gadgetspecs[26],
  204.     &gadgetspecs[27], &gadgetspecs[28], &gadgetspecs[29], &gadgetspecs[30],
  205.     &gadgetspecs[31], NULL,
  206. };
  207.  
  208. /* Finally, the layout tag list itself. This is where most of the work is
  209.  * done. This list completely describes how the above gadgets are arranged
  210.  * in groups in the GUI.
  211.  */
  212.  
  213. ULONG DEMO_LayoutList[] =
  214. {
  215.     GUIL_Flags, GUILF_PropShare,
  216.  
  217.     GUIL_VertGroup, 1,
  218.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  219.  
  220.         GUIL_VertGroup,1,
  221.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  222.             GUIL_FrameType, GUILFT_Ridge,
  223.             GUIL_FrameHeadline, "Commands",
  224.  
  225.             GUIL_GadgetSpecID, GID_EDITOR,
  226.  
  227.             GUIL_HorizGroup, 0,
  228.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  229.                 GUIL_GadgetSpecID, GID_EDITFILE,
  230.                 GUIL_GadgetSpecID, GID_GETEDITFILE,
  231.             TAG_DONE,
  232.  
  233.             GUIL_GadgetSpecID, GID_WBTOFRONT,
  234.             GUIL_GadgetSpecID, GID_CHECKDATE,
  235.         TAG_DONE,
  236.  
  237.         GUIL_VertGroup,1,
  238.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  239.             GUIL_FrameType, GUILFT_Ridge,
  240.             GUIL_FrameHeadline, "Tosser",
  241.             GUIL_GadgetSpecID, GID_DUPECHECKING,
  242.         TAG_DONE,
  243.  
  244.         GUIL_VertGroup,1,
  245.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  246.             GUIL_FrameType, GUILFT_Ridge,
  247.             GUIL_FrameHeadline, "Hotkeys",
  248.             GUIL_GadgetSpecID, GID_SPOTTOFRONT,
  249.         TAG_DONE,
  250.  
  251.         GUIL_VertGroup,1,
  252.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  253.             GUIL_FrameType, GUILFT_Ridge,
  254.             GUIL_FrameHeadline, "Message base crunching",
  255.  
  256.             GUIL_GadgetSpecID, GID_CRUNCHBUFFER,
  257.         TAG_DONE,
  258.     TAG_DONE,
  259.  
  260.     GUIL_VertGroup, 1,
  261.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  262.  
  263.         GUIL_FrameType, GUILFT_Ridge,
  264.         GUIL_FrameHeadline, "Paths/files",
  265.  
  266.         GUIL_HorizGroup, 0,
  267.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  268.             GUIL_GadgetSpecID, GID_AREAS,
  269.             GUIL_GadgetSpecID, GID_GETAREAS,
  270.         TAG_DONE,
  271.  
  272.         GUIL_HorizGroup, 0,
  273.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  274.             GUIL_GadgetSpecID, GID_INBOUND,
  275.             GUIL_GadgetSpecID, GID_GETINBOUND,
  276.         TAG_DONE,
  277.  
  278.         GUIL_HorizGroup, 0,
  279.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  280.             GUIL_GadgetSpecID, GID_OUTBOUND,
  281.             GUIL_GadgetSpecID, GID_GETOUTBOUND,
  282.         TAG_DONE,
  283.  
  284.         GUIL_HorizGroup, 0,
  285.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  286.             GUIL_GadgetSpecID, GID_WORK,
  287.             GUIL_GadgetSpecID, GID_GETWORK,
  288.         TAG_DONE,
  289.  
  290.         GUIL_HorizGroup, 0,
  291.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  292.             GUIL_GadgetSpecID, GID_NODELIST,
  293.             GUIL_GadgetSpecID, GID_GETNODELIST,
  294.         TAG_DONE,
  295.  
  296.         GUIL_HorizGroup, 0,
  297.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  298.             GUIL_GadgetSpecID, GID_FATTACH,
  299.             GUIL_GadgetSpecID, GID_GETFATTACH,
  300.         TAG_DONE,
  301.  
  302.         GUIL_HorizGroup, 0,
  303.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  304.             GUIL_GadgetSpecID, GID_SAVE,
  305.             GUIL_GadgetSpecID, GID_GETSAVE,
  306.         TAG_DONE,
  307.  
  308.         GUIL_HorizGroup, 0,
  309.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  310.             GUIL_GadgetSpecID, GID_AREXX,
  311.             GUIL_GadgetSpecID, GID_GETAREXX,
  312.         TAG_DONE,
  313.  
  314.         GUIL_HorizGroup, 0,
  315.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  316.             GUIL_GadgetSpecID, GID_LOGFILE,
  317.             GUIL_GadgetSpecID, GID_GETLOGFILE,
  318.         TAG_DONE,
  319.  
  320.         GUIL_GadgetSpecID, GID_OPTIMIZE,
  321.     TAG_DONE,
  322.  
  323.     TAG_DONE
  324. };
  325.  
  326. /* Obligatory version tag */
  327.  
  328. static const char ver[] = "$VER: General2 1.0 " __AMIGADATE__;
  329.  
  330. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  331.  
  332. int DEMO_InitialOrientation = GUIL_HorizGroup;
  333.  
  334. STRPTR DEMO_WindowTitle = "Spot/General GUI (2)";
  335. STRPTR DEMO_AppID       = "Spot.General2";
  336.  
  337. STRPTR DEMO_Version     = "1.0",
  338.        DEMO_LongDesc    = "Demo program - The 'General' GUI of Spot (2)",
  339.        DEMO_Author      = "Michael Berg",
  340.        DEMO_Date        = __AMIGADATE__;
  341.  
  342. BOOL   DEMO_Backfill    = FALSE;
  343.